package com.fqgj.xjd.user.client;
/**
 * Created by zhangxingyun on 17/7/23.
 */

import com.fqgj.common.api.Response;
import com.fqgj.xjd.user.client.enums.AppCodeEnum;
import com.fqgj.xjd.user.client.request.Carrier;
import com.fqgj.xjd.user.client.request.UserContactAddressBookPageQueryRO;
import com.fqgj.xjd.user.client.request.UserEmergencyContact;
import com.fqgj.xjd.user.client.request.UserSmsPageQueryRO;
import com.fqgj.xjd.user.client.response.UserContactAddressBook;
import com.fqgj.xjd.user.client.response.UserContactSms;
import com.fqgj.xjd.user.client.response.UserSocialContact;
import com.qianli.common.enums.AppEnum;

import java.util.List;

/**
 * @ClassName:
 * @Description: 用户社交信息服务
 * @Author zhangxingyun
 * @Create 2017-07-23 21:03
 */
public interface UserContactService {

    /**
     * 添加运营商信息
     *
     * @param userCode
     * @param carrier
     * @return boolean
     */
    Response<Boolean> addUserCarrier(String userCode, Carrier carrier);

    /**
     * 保持通讯录信息
     *
     * @param userCode
     * @param deviceContactUrl
     * @return boolean
     */
    @Deprecated
    Response<Boolean> addUserDeviceContact(String userCode, String deviceContactUrl);

    /**
     * 保持通讯录信息
     *
     * @param userCode
     * @param deviceContactUrl
     * @return boolean
     */
    @Deprecated
    Response<Boolean> addUserDeviceContact(String userCode, String deviceContactUrl, AppCodeEnum appCodeEnum);

    /**
     * 保持通讯录信息 新版
     *
     * @param userCode
     * @param deviceContactUrl
     * @param appEnum
     * @return boolean
     */
    @Deprecated
    Response<Boolean> addUserDeviceContact(String userCode, String deviceContactUrl, AppEnum appEnum);

    /**
     * 保持通讯录信息 新版
     *
     * @param userCode
     * @param deviceContactUrl
     * @param appCode
     */
    Response<Boolean> addUserDeviceContact(String userCode, String deviceContactUrl, String appCode);

    /**
     * 保存通讯录和短信信息
     *
     * @param userCode
     * @param smsUrl
     * @param appCode
     * @return
     */
    Response<Boolean> addUserSmsInfo(String userCode, String deviceContactUrl, String smsUrl, String appCode);

    /**
     * 保存短信
     *
     * @param userCode
     * @param smsUrl
     * @param appCode
     * @return
     */
    Response<Boolean> addUserSmsInfo(String userCode, String smsUrl, String appCode);

    /**
     * 获取通讯录信息
     */
    Response<UserContactAddressBook> getUserDeviceContactByUserCode(String userCode);

    /**
     * 获取短信信息
     *
     * @param userCode
     * @return
     */
    Response<UserContactSms> getUserDeviceSmsByUserCode(String userCode);

    /**
     * 根据条件分页查询短信
     *
     * @param userSmsPageQueryRO
     * @return
     */
    Response<List<UserContactSms>> getUserSmsListByPage(UserSmsPageQueryRO userSmsPageQueryRO);


    /**
     * 获取通讯录信息
     */
    @Deprecated
    Response<UserContactAddressBook> getUserDeviceContactByUserCodeAndAppCode(String userCode, AppEnum appEnum);

    /**
     * 获取通讯录信息 目前返回第一条和最新一条
     */
    Response<List<UserContactAddressBook>> getUserDeviceContactListByUserCode(String userCode);

    /**
     * 分页查询通讯录信息
     *
     * @param userContactAddressBookPageQueryRO
     * @return
     */
    Response<List<UserContactAddressBook>> getUserDeviceContactListByPage(UserContactAddressBookPageQueryRO userContactAddressBookPageQueryRO);

    /**
     * 更新通讯录信息
     *
     * @param userCode
     * @param deviceContactUrl
     * @return
     */
    Response<Boolean> updateUserDeviceContact(String userCode, String deviceContactUrl, String smsUrl);

    /**
     * 更新通讯录
     *
     * @param userCode
     * @param deviceContactUrl
     * @return
     */
    Response<Boolean> updateUserDeviceContact(String userCode, String deviceContactUrl);

    /**
     * 保存紧急联系人信息
     *
     * @param userCode
     * @param userEmergencyContact
     * @return boolean
     */
    Response<Boolean> addUserEmergencyContact(String userCode, UserEmergencyContact userEmergencyContact);

    /**
     * 更新紧急联系人
     *
     * @param userCode
     * @param userEmergencyContact
     * @return
     */
    Response<Boolean> updateUserEmergencyContact(String userCode, UserEmergencyContact userEmergencyContact);

    /**
     * 获取用户社交信息
     *
     * @param userCode
     * @return UserSocialContact
     */
    Response<UserSocialContact> getUserSocialContactByUserCode(String userCode);

    /**
     * 查询用户紧急联系人手机号是否被占用
     *
     * @param mobile
     * @param userCode
     * @return true - 被占用 false - 未被占用
     */
    Response<Boolean> checkUserEmergencyContactOccupied(String userCode, String mobile);

    /**
     * 获取运营商信息
     */
    Response<List<Carrier>> getCarriers(String userCode);

    /**
     * 根据状态获取运营商信息
     */
    Response<List<Carrier>> getCarriersByStatus(Integer status);

}
